using System;
using System.Collections.Generic;


namespace Gfw.Models.Account
{
	[Serializable]
    public partial class ActCompanyStatisticsmoney : IEquatable<ActCompanyStatisticsmoney>
	{

		#region Private Members

		private string _id; 
		private decimal _accrued; 
		private decimal _recharge; 
		private decimal _tocash; 
		private decimal _recommend; 
		private decimal _pair; 
		private DateTime _settlementdate; 
		private decimal _income; 
		private decimal _outlay; 
		private decimal _balance; 
		private string _abstract; 		
		#endregion

		#region Constructor

		public ActCompanyStatisticsmoney()
		{
			_id = String.Empty; 
			_accrued = 0; 
			_recharge = 0; 
			_tocash = 0; 
			_recommend = 0; 
			_pair = 0; 
			_settlementdate = DateTime.MinValue; 
			_income = 0; 
			_outlay = 0; 
			_balance = 0; 
			_abstract = String.Empty; 
		}
		#endregion // End of Default ( Empty ) Class Constuctor

		#region Public Properties
			
		public virtual string Id
		{
			get
			{ 
				return _id;
			}

			set	
			{	
				if( value == null )
					throw new ArgumentOutOfRangeException("Null value not allowed for Id", value, "null");
				
				if(  value.Length > 40)
					throw new ArgumentOutOfRangeException("Invalid value for Id", value, value.ToString());
				
				_id = value;
			}
		}
			
		public virtual decimal Accrued
		{
			get
			{ 
				return _accrued;
			}
			set
			{
				_accrued = value;
			}

		}
			
		public virtual decimal Recharge
		{
			get
			{ 
				return _recharge;
			}
			set
			{
				_recharge = value;
			}

		}
			
		public virtual decimal ToCash
		{
			get
			{ 
				return _tocash;
			}
			set
			{
				_tocash = value;
			}

		}
			
		public virtual decimal Recommend
		{
			get
			{ 
				return _recommend;
			}
			set
			{
				_recommend = value;
			}

		}
			
		public virtual decimal Pair
		{
			get
			{ 
				return _pair;
			}
			set
			{
				_pair = value;
			}

		}
			
		public virtual DateTime SettlementDate
		{
			get
			{ 
				return _settlementdate;
			}
			set
			{
				_settlementdate = value;
			}

		}
			
		public virtual decimal Income
		{
			get
			{ 
				return _income;
			}
			set
			{
				_income = value;
			}

		}
			
		public virtual decimal Outlay
		{
			get
			{ 
				return _outlay;
			}
			set
			{
				_outlay = value;
			}

		}
			
		public virtual decimal Balance
		{
			get
			{ 
				return _balance;
			}
			set
			{
				_balance = value;
			}

		}
			
		public virtual string Abstract
		{
			get
			{ 
				return _abstract;
			}

			set	
			{	
				if(  value != null &&  value.Length > 256)
					throw new ArgumentOutOfRangeException("Invalid value for Abstract", value, value.ToString());
				
				_abstract = value;
			}
		}
			
				
		#endregion 

		#region Public Functions

		#endregion //Public Functions

		#region IEquatable members

        public virtual bool Equals(ActCompanyStatisticsmoney other)
		{
			if (other == this)
				return true;
		
			return ( other != null ) &&
				( this._id == other.Id );
				   
		}

		#endregion
		
	}
}
